ヘッダーをスキップ
Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド
リリース7.0
E05164-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

XLAブックマークについて

永続トランザクション・ログの各リーダーは、ブックマークを使用して更新ログ・ストリーム内での位置を維持します。各ブックマークは、ログ順序番号(LSN)を使用してトランザクション・ログ内の更新レコードを追跡する2つのポインタで構成されています。

ttXlaPersistOpen関数をコールして永続XLAハンドルを初期化する場合は、tagパラメータを使用して新しいブックマークまたはシステムに既存のブックマークのいずれかを指定します(「XLAの初期化およびXLAハンドルの取得」を参照)。この時点で、ブックマークに関連付けられている初期読取りLSNは、永続XLAハンドル(ttXlaHandle_h)にキャッシュされているデータ・ストアから読み込まれ、トランザクション・ログに読取り開始位置を示します。

アプリケーションが最初にXLAを初期化し、XLAハンドルを取得した時点では、現行読取りLSNポインタは初期読取りLSNポインタと同じです。図3.2に示すように、両方ともデータ・ストアに最後に書き込まれたレコードを指しています。

図3.2 永続XLAハンドルを初期化した時点でのLSNの位置
永続XLAハンドルを初期化した時点でのLSNの位置[説明]

ttXlaNextUpdateまたはttXlaNextUpdateWait関数を使用すると、一連のコミット済トランザクションのレコードが、コミットされた順序で返されます(「トランザクション・ログからの更新レコードの取得」を参照)。図3.3に示すように、ttXlaNextUpdateをコールするたびに、ブックマークの現行読取りLSNポインタは、最後に読み取られたレコードに再設定されます。現行読取りLSNポインタによって、次にttXlaNextUpdateをコールする場合の開始位置がマークされます。

図3.3 ttXlaNextUpdate()によって取得されるレコード
 ttXlaNextUpdateによって取得されるレコード[説明]

ttXlaGetLSNおよびttXlaSetLSN関数を使用すると、レコードを再度読み取ることができます(「ブックマークの位置の変更」を参照)。ただし、図3.4に示すように、ttXlaAcknowledge関数をコールすると、ブックマークの初期読取りLSNおよび現行読取りLSNが永続的に再設定されます。ttXlaAcknowledge関数をコールして初期読取りLSNを再設定すると、以前に読み取られたすべてのトランザクション・レコードにパージのフラグが設定されます。初期読取りLSNを再設定すると、ttXlaSetLSN関数を使用して元に戻し、以前に読み込んだトランザクションを再度読み取ることはできません。

図3.4 ttXlaAcknowledgeによるブックマークの再設定
ttXlaAcknowledgeによるブックマークの再設定[説明]

TimesTenデータ・ストアで作成されるブックマークの数に制限はありません。各ブックマークは、一度に1つのみのアクティブな永続接続と関連付けることができます。ただし、ブックマークは、存続期間中に多数の接続と関連付けることができます。アプリケーションによって、永続接続をオープンし、新しいブックマークを作成し、そのブックマークを接続と関連付け、ブックマークを使用してレコードを読み取り、接続を切断(場合によってはデータ・ストアから切断)し、データ・ストアに再接続し、新しい永続接続を作成し、この新しい接続を既存のブックマークと関連付け、以前の接続が停止された永続トランザクション・ログ・レコードの読取りを続行することができます。